home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -seriously_amiga- / shareware / programming / other / pmdev / include / libraries / pm.h
C/C++ Source or Header  |  1998-01-05  |  7KB  |  220 lines

  1. //
  2. //    $VER: pm.h 7.0 (9.11.97)
  3. //
  4. //    Library base, tags and macro definitions
  5. //    for popupmenu.library.
  6. //
  7. //    ©1996-1997 Henrik Isaksson
  8. //    All Rights Reserved.
  9. //
  10.  
  11. #ifndef LIBRARIES_POPUPMENU_H
  12. #define LIBRARIES_POPUPMENU_H
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17.  
  18. #ifndef EXEC_LIBRARIES_H
  19. #include <exec/libraries.h>
  20. #endif
  21.  
  22. #ifndef UTILITY_TAGITEM_H
  23. #include <utility/tagitem.h>
  24. #endif
  25.  
  26. //
  27. // Tags passed to PM_OpenPopupMenuA and PM_FilterIMsgA
  28. //
  29.  
  30. #define PM_Menu            (TAG_USER+4)    // (struct PopupMenu *) Pointer to menulist initialized by MakeMenu()
  31. #define PM_Top            (TAG_USER+12)    // (LONG) Top (Y) position
  32. #define PM_Left            (TAG_USER+13)    // (LONG) Left (X) position
  33. #define PM_Code            (TAG_USER+14)    // (UWORD) Read the documentation.
  34. //#define PM_Right        (TAG_USER+15)
  35. //#define PM_Bottom        (TAG_USER+16)
  36. //#define PM_MinWidth        (TAG_USER+17)
  37. //#define PM_MinHeight        (TAG_USER+18)
  38. //#define PM_ForceFont        (TAG_USER+19)
  39. #define PM_PullDown        (TAG_USER+90)    // (BOOL) Make the menu a pulldown menu.
  40. #define PM_MenuHandler        (TAG_USER+91)    // (struct Hook *) Hook that is called for each selected item, after the
  41.                         // menu has been closed. This tag turns on MultiSelect.
  42. #define PM_AutoPullDown        (TAG_USER+92)    // Make an automatic pulldown menu. (PM_FilterIMsg only)
  43. #define PM_LocaleHook        (TAG_USER+93)    // Locale "GetString()" hook.
  44.  
  45. //
  46. // Tags passed to MakeItem
  47. //
  48.  
  49. #define PM_Title        (TAG_USER+20)    // Item title
  50. #define PM_UserData        (TAG_USER+21)    // Anything, returned by OpenPopupMenu when this item is selected
  51. #define PM_ID            (TAG_USER+22)    // ID number, if you want to access this item later
  52. #define PM_Sub            (TAG_USER+23)    // Pointer to submenu list (from MakeMenu)
  53. #define PM_Flags        (TAG_USER+24)    // For internal use
  54. #define PM_NoSelect        (TAG_USER+25)    // Make the item unselectable
  55. #define PM_FillPen        (TAG_USER+26)    // Make the item appear in FILLPEN
  56. #define PM_Checkit        (TAG_USER+27)    // Leave space for a checkmark
  57. #define PM_Checked        (TAG_USER+28)    // Make this item is checked
  58. #define PM_Italic        (TAG_USER+29)    // Italic text
  59. #define PM_Bold            (TAG_USER+30)    // Bold text
  60. #define PM_Underlined        (TAG_USER+31)    // Underlined text
  61. #define PM_TitleBar        (TAG_USER+32)    // Horizontal separator bar
  62. #define PM_WideTitleBar        (TAG_USER+33)    // Same as above, but full width
  63. #define PM_ShadowPen        (TAG_USER+34)    // Draw text in SHADOWPEN
  64. #define PM_ShinePen        (TAG_USER+35)    // Draw text in SHINEPEN
  65. #define PM_Center        (TAG_USER+36)    // Center the text of this item
  66. #define PM_Exclude        (TAG_USER+37)    // Items to unselect (or select) when this gets selected
  67. #define PM_Disabled        (TAG_USER+38)    // Disable an item
  68. #define PM_ImageSelected    (TAG_USER+39)    // Image when selected, PM_Title will be render on top of the image
  69. #define PM_ImageUnselected    (TAG_USER+40)    // Image when unselected
  70. #define PM_IconSelected        (TAG_USER+41)    // Icon when selected
  71. #define PM_IconUnselected    (TAG_USER+42)    // Icon when unselected
  72. //#define PM_ImageMode        (TAG_USER+43)
  73. #define PM_AutoStore        (TAG_USER+44)    // Pointer to BOOL reflecting the current state of the item
  74. #define PM_TextPen        (TAG_USER+45)    // Pen number for text colour of this item, if you want to allocate a pen yourself
  75. #define PM_Meaning        (TAG_USER+46)    // Lets the user select text style, colour and icon for this item.
  76. #define PM_CommKey        (TAG_USER+47)    // Keyboard shortcut for this item.
  77. #define PM_Shadowed        (TAG_USER+48)    // Gives the text a shadow
  78. #define PM_LocaleTitle        (TAG_USER+49)    // Locale string ID
  79. #define PM_BuiltInIcon        (TAG_USER+59)    // Built-in Icon
  80. #define PM_ColourBox        (TAG_USER+60)    // Filled rectangle
  81.  
  82. //
  83. // Tags passed to MakeMenu
  84. //
  85.  
  86. #define PM_Item            (TAG_USER+50)    // Item pointer from MakeItem
  87. #define PM_Dummy        (TAG_USER+51)    // Sometimes very useful
  88.  
  89. //
  90. // Tags passed to MakeIDList
  91. //
  92.  
  93. #define PM_ExcludeID        (TAG_USER+55)    // ID number of menu to deselect when this gets selected
  94. #define PM_IncludeID        (TAG_USER+56)    // ID number of menu to select when this gets selected
  95. #define PM_ReflectID        (TAG_USER+57)    // ID number of menu that should reflect the state of this one
  96. #define PM_InverseID        (TAG_USER+58)    // ID number of menu to inverse reflect the state of this one
  97.  
  98. //
  99. // Built-In Icons
  100. //
  101.  
  102. #define PMIMG_CHECKMARK        100
  103. #define PMIMG_SUBMENU        101
  104. #define PMIMG_EXCLUDE        102
  105. #define PMIMG_AMIGA        103
  106. #define PMIMG_NEW        104
  107. #define PMIMG_OPEN        105
  108. #define PMIMG_SAVE        106
  109. #define PMIMG_PRINT        107
  110. #define PMIMG_ABOUT        108
  111. #define PMIMG_QUIT        109
  112. #define PMIMG_CUT        110
  113. #define PMIMG_COPY        111
  114. #define PMIMG_PASTE        112
  115. #define PMIMG_ERASE        113
  116. #define PMIMG_UNDO        114
  117. #define PMIMG_REDO        115
  118. #define PMIMG_NEXT        116
  119. #define PMIMG_PREV        117
  120. #define PMIMG_SEARCH        118
  121. #define PMIMG_VIEW        119
  122. #define PMIMG_GRID        120
  123. #define PMIMG_ZOOMIN        121
  124. #define PMIMG_ZOOMOUT        122
  125. #define PMIMG_HELP        123
  126. #define PMIMG_HIDE        124
  127. #define PMIMG_INFORMATION    125
  128. #define PMIMG_PLAY        126
  129. #define PMIMG_ADD        127
  130. #define PMIMG_INSERT        128
  131.  
  132. //
  133. // Macros
  134. //
  135.  
  136. #define PMMenu(t)    PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, PM_Shadowed, TRUE, PM_Center, TRUE, TAG_DONE),\
  137.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  138. #define PMSubMenu(t)    PM_Sub, PM_MakeMenu(PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, TAG_DONE),\
  139.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  140. #define PMSimpleSub    PM_Sub, PM_MakeMenu(PM_Dummy, 0
  141. #define PMItem(t)    PM_Item, PM_MakeItem(PM_Title, t
  142. #define PMInfo(t)    PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE
  143. #define PMBar        PM_Item, PM_MakeItem(PM_TitleBar, TRUE
  144. #define PMTitleBar    PMBar
  145. #define PMNarrowBar    PM_Item, PM_MakeItem(PM_TitleBar, TRUE
  146. #define PMNarrowTitleBar    PMNarrowBar
  147. #define PMMenuTitle(t)    PM_Item, PM_MakeItem(PM_Title, t, PM_NoSelect, TRUE, PM_ShinePen, TRUE, PM_Shadowed, TRUE, PM_Center, TRUE, TAG_DONE),\
  148.             PM_Item, PM_MakeItem(PM_WideTitleBar, TRUE, TAG_DONE)
  149. #define PMExcl        PM_Exclude, PM_MakeIDList(
  150. #define ExID(id)    PM_ExcludeID, id
  151. #define InID(id)    PM_IncludeID, id
  152. #define RefID(id)    PM_ReflectID, id
  153. #define InvID(id)    PM_InverseID, id
  154. #define PMCheckItem(t,id)    PM_Item, PM_MakeItem(PM_Title, t, PM_ID, id, PM_Checkit, TRUE
  155.  
  156. #define PMEnd        TAG_DONE)
  157.  
  158. #ifndef End
  159. #define End        TAG_DONE)
  160. #endif
  161.  
  162. #define PMERR        (-5L)
  163.  
  164. //
  165. // Library base
  166. //
  167.  
  168. #ifndef PM_NOBASE
  169.  
  170. struct PopupMenuBase {
  171.     struct Library        pmb_Library;
  172.     ULONG            pmb_SegList;
  173.     ULONG            pmb_Flags;
  174.     struct Library        *pmb_ExecBase;
  175.     struct Library        *pmb_UtilityBase;
  176.     struct Library        *pmb_IntuitionBase;
  177.     struct Library        *pmb_GfxBase;
  178.     struct Library        *pmb_DOSBase;
  179.     BOOL            pmb_NewPrefs;
  180.     struct Library        *pmb_CxBase;
  181. };
  182.  
  183. #endif
  184.  
  185. #define POPUPMENU_VERSION    6L
  186. #define POPUPMENU_NAME        "popupmenu.library"
  187.  
  188. //
  189. // PopupMenu structure
  190. //
  191. // WARNING!
  192. // This structure may change in future versions.
  193. // Do not rely on anything below "UserData".
  194. //
  195.  
  196. #ifndef PMPRIV_H
  197.  
  198. struct PopupMenu {
  199.     struct PopupMenu    *Next;
  200.     struct PopupMenu    *Sub;
  201.     STRPTR            Title;        // Title
  202.     ULONG            Flags;
  203.     ULONG            ID;        // Item ID
  204.     APTR            UserData;    // UserData
  205.     ULONG            TextPen;
  206.     BOOL            *AutoSetPtr;
  207.     struct PM_IDLst        *Exclude;
  208.     LONG            Top;
  209.     LONG            Height;
  210.     struct Image        *SelImg;
  211.     struct Image        *UnSelImg;
  212.     struct Image        *SelIcon;
  213.     struct Image        *UnSelIcon;
  214.     UBYTE            CommKey;
  215. };
  216.  
  217. #endif
  218.  
  219. #endif
  220.